1. Field of the Invention
The present invention relates to a data compression system, and more particularly to a data compression system for compressing image data having frequent blank lines.
2. Discussion of the Related Art
In an image processing system it is typically desirable to compress image data. If the image data is being stored, compression of the data conserves the amount of storage space used. If the image data is being transferred over a communication line, compression of the data reduces bandwidth requirements or reduces transmission time.
Many compressors employ a run-length encoder that encodes sections of the input data containing a run of "0's" into a number indicating the number of "0's" successively appearing in the input data. Another type of encoder uses a two dimensional encoding system that encodes based on a correlation in the vertical as well as the horizontal direction.
One or two dimensional encoding is suitable for image data because image data tends to have similar types of data grouped together within a given area of the image. Although two level data, such as text data, can be directly encoded with good compression efficiency, halftone image data typically cannot be directly encoded because halftone data consists of periodic structures without successive bits of "0". Thus, before processing image data with a run-length encoder it is desirable to precondition the data to increase the number of successive "0's" with a "predictor." A predictor predicts the value of the next pixel on the basis of values of pixels already processed.
A run-length encoder typically generates code words containing a field for the run-length. Because the field is typically a fixed number of bits in size, the length of a run capable of being coded by a single unit is limited. Thus, very long runs of "0's" must be encoded using multiple code words. Text data typically contains very long runs of "0's" corresponding to multiple blank lines between lines of text. Thus, although direct run-length encoding of text data achieves some data compression, the coded data typically contains multiple code words corresponding to a single run of "0's".